#!/bin/bash

# fepini.sh

function ambiente(){ echo "Variables de ambiente:"; 
    echo "   grupo = $grupo"
    echo "   PRIN = $PRIN"
    echo "   FACTURAS = $FACTURAS"
    echo "   PRESUPUESTO = $PRESUPUESTO"
    echo "   PROVEEDORES = $PROVEEDORES"
    echo "   DORMIR_DEMONIO = $DORMIR_DEMONIO"
}
function testfile(){ if [ ! -$1 "$2" ]; then 
    echo "  ERROR: El siguiente archivo no existe o no tiene suficientes permisos (-$1)."; echo "-->\"$2\""
    return 1; else return 0; fi; 
}
function usage(){
    echo "Modo de uso: . fepini.sh [DIRECTORIO]"
    echo "Inicializa el sistema de factura electronica."; echo
    echo "  [DIRECTORIO] Permite especificar el directorio base. 
               Por defecto es el directorio actual."; echo
}

# Validacion de parametros. De no pasarse parametros, se toma pwd.
[ $# -eq 0 ] && grupo=`pwd` || grupo=$1
if [ ! -d $grupo ]; then
    echo "ERROR: El directorio especificado (\"$grupo\") no existe."; echo
    usage
    pass=1
else
    # Se hace 'cd' para que funcione con paths relativos
    grupo=`cd $grupo; pwd`
fi

# si el ambiente no esta inicializado...
if [ -z $FEENV ] && [ -z $pass ]; then
    echo "Comienza inicializacion de ambiente:"
    
    # setear $grupo al directorio actual de trabajo.
    echo "  Seteando variables de ambiente..."
    DORMIR_DEMONIO=10
    PRIN="$grupo/prin"
    FACTURAS="$grupo/facturas"
    PROVEEDORES="$grupo/prin/maepro.txt"
    PRESUPUESTO="$grupo/prin/presu.txt"
    APAGAR="$grupo/facturas/apagar.txt"

    # validar existencia y permisos de los archivos necesarios
    echo "  Validando archivos necesarios..."
    testfile "w" "$PRESUPUESTO" && 
    testfile "r" "$PROVEEDORES"
    error=$?


    # si no hubo errores...
    if [ $error -eq 0 ]; then
        # setear el PATH (esto quizas se pase al script de install)
        PATH="$PATH:$grupo/comandos/"
        
        # setear FEENV para marcar ambiente como inicializado. 
        FEENV=1
        
        # Exportar variables de ambiente.
        echo "  Exportando variables de ambiente..."
        export DORMIR_DEMONIO 
        export PRIN FACTURAS PROVEEDORES PRESUPUESTO APAGAR
        export PATH FEENV grupo 
    
        # ejecutar feponio (si no se esta ejecutando)
        echo "  Lanzando demonio (feponio.sh)..."
        startfe.sh
        
        # mostrar mensaje de OK. Mostrar Ambiente. Mostrar PID de feponio.
        echo; echo "Inicializacion de Ambiente Concluida."
        ambiente; echo
        echo "Demonio corriendo bajo el no.: `pgrep feponio.sh`"
    else
        echo "Inicializacion de Ambiente no fue exitosa."
    fi
else 
    if [ ! -z $pass ]; then 
        echo "Inicializacion de Ambiente no fue exitosa."
        unset pass
    else 
        # no se puede usar exit (la consola se cerraria)
        echo "WARNING: El ambiente ya se encuentra inicializado."
        ambiente
    fi
fi

